package br.com.velp.sudecap.serviceimpl;

import br.com.velp.sudecap.comum.SpringConstants;
import br.com.velp.sudecap.dao.LogAuditoriaDAO;
import br.com.velp.sudecap.enumerator.TipoOperacaoEnum;
import br.com.velp.sudecap.service.LogAuditoriaService;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * <sumario> 
 * <objetivo> "Rastreabilidade" </objetivo> 
 * <autor> EDUARDO SANTOS DE OLIVEIRA </autor> 
 * <versao>1.0.0.0</versao> 
 * <data_criacao> 30.07.2013 </data_criacao> 
 * <data_ultima_alteracao> N/A </data_ultima_alteracao>
 * <requisitos_afetados> N/A </requisitos_afetados> 
 * <descricao> Implementação da Interface Responsável
 *             Pelas Operações de Logs de Auditoria do Sistema 
 * </descricao>
 * </sumario>
 */
@Service("logAuditoriaService")
@Transactional(readOnly = true)
@Lazy(SpringConstants.LAZY_BEANS)
public class LogAuditoriaServiceImpl implements LogAuditoriaService {
    
    public static final Long serialVersionUID = 1l;

    @Autowired
    private LogAuditoriaDAO logAuditoriaDAO;

    @Override
    public List recuperarHistoricoModificacoes(Long idEntidade,
            Class classeBase, TipoOperacaoEnum... tiposOperacao) throws Exception {
        return this.logAuditoriaDAO.recuperarHistoricoModificacoes(idEntidade, classeBase, tiposOperacao);
    }
    
    @Override
    public List<Map<String, Object>> recuperarMapaHistoricoModificacoes(Long idEntidade, 
            Class classeBase, TipoOperacaoEnum... tiposOperacao) throws Exception{
        return this.logAuditoriaDAO.recuperarMapaHistoricoModificacoes(idEntidade, classeBase, tiposOperacao);
    }
    
    @Override
    public String recuperarDescricaoEntidade(Long idEntidade, Class entidade, String atributoDescricao){
        return this.logAuditoriaDAO.recuperarDescricaoEntidade(idEntidade, entidade, atributoDescricao);
    }
    
}
